package model_response

import "go-admin/internal/model"

type ListMenuResponse struct {
	CommonId
	IsBanned      string `json:"isBanned"`      // 是否禁用
	MenuTitle     string `json:"menuTitle"`     // 菜单标题
	Icon          string `json:"icon"`          // 菜单图标
	Path          string `json:"path"`          // 当前路由或当前接口地址
	Permission    string `json:"permission"`    // 权限标识
	IsVisible     string `json:"isVisible"`     // 是否可见
	ParentId      string `json:"parentId"`      // 父id
	MenuType      string `json:"menuType"`      // 菜单类型
	RouteName     string `json:"routeName"`     // 路由名称
	ComponentPath string `json:"componentPath"` // 组件路径
	CommonCreatedOn
	Children []*ListMenuResponse `json:"children"` // 子级
}

type MenuDetail struct {
	CommonId
	IsBanned      string `json:"isBanned"`      // 是否禁用
	Remark        string `json:"remark"`        // 备注信息
	RouteName     string `json:"routeName"`     // 路由名称
	MenuTitle     string `json:"menuTitle"`     // 菜单标题
	Icon          string `json:"icon"`          // 菜单图标
	Path          string `json:"path"`          // 当前路由或当前接口地址
	MenuType      string `json:"menuType"`      // 菜单类型
	Action        string `json:"action"`        // http请求方式
	Permission    string `json:"permission"`    // 权限标识
	ParentId      string `json:"parentId"`      // 父id
	ComponentPath string `json:"componentPath"` // 组件路径
	IsVisible     string `json:"isVisible"`     // 是否可见
	IsIframe      string `json:"isIframe"`      // 是否是iframe外链
}

func ModelToDetailMenuRes(model *model.Menu) *MenuDetail {
	menu := &MenuDetail{
		CommonId:      CommonId{Id: model.Id},
		Remark:        model.Remark,
		RouteName:     model.RouteName,
		MenuTitle:     model.MenuTitle,
		Icon:          model.Icon,
		Path:          model.Path,
		MenuType:      model.MenuType,
		Action:        model.Action,
		Permission:    model.Permission,
		ParentId:      model.ParentId,
		ComponentPath: model.ComponentPath,
		IsVisible:     model.IsVisible,
		IsIframe:      model.IsIframe,
	}
	return menu
}

func ModelToListMenuTreeRes(models []*model.Menu) []*ListMenuResponse {
	var list []*ListMenuResponse
	for _, m := range models {
		l := ListMenuResponse{
			CommonId:        CommonId{Id: m.Id},
			IsBanned:        m.IsBanned,
			MenuTitle:       m.MenuTitle,
			Icon:            m.Icon,
			Path:            m.Path,
			Permission:      m.Permission,
			IsVisible:       m.IsVisible,
			ParentId:        m.ParentId,
			MenuType:        m.MenuType,
			RouteName:       m.RouteName,
			ComponentPath:   m.ComponentPath,
			CommonCreatedOn: CommonCreatedOn{CreatedOn: m.CreatedOn},
		}
		var childList []*ListMenuResponse
		l.Children = childList
		list = append(list, &l)
	}
	return list
}
